﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using BusinessLogicLayer;
using DataAccessComponents;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Controls.Primitives;
using System.Reflection;
namespace inzDesktop
{    
    /// <summary>
    /// Interaction logic for windowGlowne.xaml
    /// </summary>
    public partial class windowGlowne : Window
    {
        private Klient zaznaczonyKlient = new Klient();
        private ObservableCollection<Pracownik> pracownicy = new ObservableCollection<Pracownik>();
        private ObservableCollection<Pracownik> pracownicyDoUsuniecia = new ObservableCollection<Pracownik>();
        private ObservableCollection<Klient> klienciDoUsuniecia = new ObservableCollection<Klient>();
        private ObservableCollection<Hotel> hoteleDoUsuniecia = new ObservableCollection<Hotel>();
        //Miasto        
        private ObservableCollection<Miasto> miastoDoUsuniecia = new ObservableCollection<Miasto>();
        //Kraj        
        private ObservableCollection<Kraj> krajDoUsuniecia = new ObservableCollection<Kraj>();
        //Lotnisko
        private ObservableCollection<Lotnisko> lotniskoDoUsuniecia = new ObservableCollection<Lotnisko>();
        //LinieLotnicze
        private ObservableCollection<LinieLotnicze> linielotniczeDoUsuniecia = new ObservableCollection<LinieLotnicze>();
        //Wyzywienie
        private ObservableCollection<Wyzywienie> wyzywienieDoUsuniecia = new ObservableCollection<Wyzywienie>();
        //Kategoria
        private ObservableCollection<Kategoria> kategoriaDoUsuniecia = new ObservableCollection<Kategoria>();
        // Oferta
        private ObservableCollection<Oferta> ofertaDoUsuniecia = new ObservableCollection<Oferta>();
        // Termin
        private ObservableCollection<Termin> terminDoUsuniecia = new ObservableCollection<Termin>();
        // Rezerwacja
        private ObservableCollection<Rezerwacja> rezerwacjaDoUsuniecia = new ObservableCollection<Rezerwacja>();
        // Oddzial
        private ObservableCollection<Oddzial> oddzialDoUsuniecia = new ObservableCollection<Oddzial>();
        // Usługi
        private ObservableCollection<DodatkoweUslugi> uslugiDoUsuniecia = new ObservableCollection<DodatkoweUslugi>();
        // Aktualnosci
        private ObservableCollection<Aktualnosci> aktualnosciDoUsuniecia = new ObservableCollection<Aktualnosci>();
        // Promocje
        private ObservableCollection<Promocja> promocjaDoUsuniecia = new ObservableCollection<Promocja>();
        // Aktualnie zalogowany pracownik
        private Pracownik pracownikZalogowany;
        public windowGlowne()
        {
            InitializeComponent();
     
        }

        private void btnWyloguj_Click(object sender, RoutedEventArgs e)
        {

            MessageBoxResult mbr = MessageBox.Show("Czy na pewno wylogować?", "Pytanie", MessageBoxButton.YesNo, MessageBoxImage.Information);
            if (mbr == MessageBoxResult.Yes)
            {
                pracownikZalogowany = null;
                
                windowLogowanie wl = new windowLogowanie();
                wl.Show();
                this.Close();
            }

        }

        public void inicjalizujZawartosc(int id)
        {
            PracownikBL pracownikBL = new PracownikBL();
            pracownikZalogowany = pracownikBL.pobierz(id);
            // zmiana aktywnosci
            pracownikZalogowany.Data_aktywnosci = DateTime.Now;
            pracownikBL.aktualizuj(pracownikZalogowany);

            lblWitaj.Content = "Witaj, " + pracownikZalogowany.Imie + " " + pracownikZalogowany.Nazwisko;

        }

        private void tabListaKlientow_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujListeKlientow();          
        }
       
                
        private void btnSzczegolowoKlienta_Click(object sender, RoutedEventArgs e)
        {
            // Tworzenie obiektu nowego okna                      
            windowSzczegolyKlienta window = new windowSzczegolyKlienta();
            zaznaczonyKlient = (Klient)dataGridListaKlientow.SelectedItem;

            // Przekazywanie idklienta do nowego okna
            window.inicjalizujZawartosc(zaznaczonyKlient.Id_klient);
            window.Show();
        }

        private void dataGridListaKlientow_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            btnSzczegolowoKlienta.Visibility = Visibility.Visible;            
        }

        private void tabListaPracownikow_Loaded(object sender, RoutedEventArgs e)
        {
            
            aktulizujListePracownikow();
            
        }       

        private void btnOdswiez_Click(object sender, RoutedEventArgs e)
        {
            aktulizujListePracownikow();
            MessageBox.Show("Lista została pomyślnie odświeżona", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void aktulizujListePracownikow()
        {
            pracownicyDoUsuniecia.Clear();                

            PracownikBL pracownik = new PracownikBL();
            pracownicy = pracownik.pobierzListe();

            //dodawanie listy dostępnych uprawnień do combobox
            UprawnienieBL uprBL = new UprawnienieBL();
            cbUprawnienie.ItemsSource = uprBL.pobierzListe();

            //dodawanie listy dostępnych stanowisk
            StanowiskoBL staBL = new StanowiskoBL();
            cbStanowisko.ItemsSource = staBL.pobierzListe();

            OddzialBL oddzialBL = new OddzialBL();
            cbColumnaOddzialPracownik.ItemsSource = oddzialBL.pobierzListe();
            // Dodawanie widoku do kontrolki od filtrowania
            filtrPracownik.Widok = CollectionViewSource.GetDefaultView(pracownicy);
            dataGridListaPracownikow.ItemsSource = filtrPracownik.Widok;

            // Przekazanie nazw kolumn
            filtrPracownik.cbNazwaColumny.ItemsSource = new String[]{"ID","Imie","Nazwisko","Email","Oddział"};
            // Dodanie filtru
            filtrPracownik.Filtr = new Predicate<object>(filtrPracownik.filtrListaPracownikow);
        }

        private void aktualizujListeKlientow()
        {
            klienciDoUsuniecia.Clear();

            KlientBL klient = new KlientBL();
            ObservableCollection<Klient> klienci = klient.pobierzListe(1);

            // Dodawanie widoku do kontrolki od filtrowania
            filtrKlient.Widok = CollectionViewSource.GetDefaultView(klienci);
            dataGridListaKlientow.DataContext = filtrKlient.Widok;   

            // Przekazywanie nazw kolumn
            filtrKlient.cbNazwaColumny.ItemsSource = new String[] { "ID", "Imie", "Nazwisko", "Email","Nr stacjonarny","Nr komórkowy" };
            // Dodawanie filtru            
            filtrKlient.Filtr = new Predicate<object>(filtrKlient.filtrListaKlientow);
        }

        

        private void aktualizujListeHotel()
        {
            hoteleDoUsuniecia.Clear();

            HotelBL hotelBL = new HotelBL();
            ObservableCollection<Hotel> hotel = hotelBL.pobierzListe();

            // Dodawanie widoku do kontrolki od filtrowania
            filtrHotele.Widok = CollectionViewSource.GetDefaultView(hotel);
            dataGridHotele.ItemsSource = filtrHotele.Widok;
            
            // Przekazywanie nazw kolumn
            filtrHotele.cbNazwaColumny.ItemsSource = new String[] { "Nazwa", "Standard hotelu", "Miasto", "Kraj"};
            // Dodawanie filtru 
            filtrHotele.Filtr = new Predicate<object>(filtrHotele.filtrListaHoteli);
        }


        private void btnZapisz_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(dataGridListaPracownikow))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    PracownikBL pracBL = new PracownikBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Pracownik> tmp = filtrPracownik.Widok.SourceCollection as ObservableCollection<Pracownik>;
              
                    if (pracBL.aktualizujListe(tmp) == true && pracBL.usun(pracownicyDoUsuniecia) == true)
                    {
                        aktulizujListePracownikow();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + pracownicyDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    aktulizujListePracownikow();
                }
                else
                {

                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }

        private void btnUsunPracownika_Click(object sender, RoutedEventArgs e)
        {
            //pracownicyDoUsuniecia.Clear();

            MessageBoxResult wynik = MessageBox.Show("Czy napewno chcesz usuną zaznaczone pozycje?", "Uwaga", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (wynik == MessageBoxResult.Yes)
            {
                for (int i = 0; i < dataGridListaPracownikow.SelectedItems.Count; i++)
                {
                    // Obiekty do usuniecia
                    pracownicyDoUsuniecia.Add(((Pracownik)dataGridListaPracownikow.SelectedItems[i]));

                    // Usunięcie z dataGrida
                    pracownicy.Remove((Pracownik)dataGridListaPracownikow.SelectedItems[i]);
                }
            }
        }
        
        private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            aktulizujListePracownikow();
            aktualizujListeKlientow();
            MessageBox.Show("Lista została pomyślnie odświeżona", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void btnDodajPracownika_Click(object sender, RoutedEventArgs e)
        {
            windowDodajPracownika wDodajPracownika = new windowDodajPracownika();

            wDodajPracownika.ShowDialog();

            if (wDodajPracownika.DialogResult == true)
            {
                MessageBox.Show("Operacja zakończona sukcesem", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                aktulizujListePracownikow();
            }
            else if(wDodajPracownika.DialogResult == false)
            {
                MessageBox.Show("Operacja nie zakończyła się sukcesem", "Brak sukcesu", MessageBoxButton.OK, MessageBoxImage.Exclamation);
            }
        }        

        private void adresPracownik_TextChanged(object sender, TextChangedEventArgs e)
        {
            if (dataGridListaPracownikow.SelectedItem != null)
            {
                switch ((sender as TextBox).Name)
                {
                    case "tbUlica": ((Pracownik)dataGridListaPracownikow.SelectedItem).Adres.Ulica = (sender as TextBox).Text;
                        break;
                    case "tbNrDomu": ((Pracownik)dataGridListaPracownikow.SelectedItem).Adres.Nr_domu = (sender as TextBox).Text;
                        break;
                    case "tbKodPocztowy": ((Pracownik)dataGridListaPracownikow.SelectedItem).Adres.Kod_pocztowy = (sender as TextBox).Text;
                        break;
                    case "tbMiasto": ((Pracownik)dataGridListaPracownikow.SelectedItem).Adres.Miasto = (sender as TextBox).Text;
                        break;
                    case "tbWojewodztwo": ((Pracownik)dataGridListaPracownikow.SelectedItem).Adres.Wojewodztwo = (sender as TextBox).Text;
                        break;
                    case "tbKraj": ((Pracownik)dataGridListaPracownikow.SelectedItem).Adres.Kraj = (sender as TextBox).Text;
                        break;
                }               
            }
        }        

        private void btnUsusKlient_Click(object sender, RoutedEventArgs e)
        {
            //klienciDoUsuniecia.Clear();

            MessageBoxResult wynik = MessageBox.Show("Czy napewno chcesz usuną zaznaczone pozycje?", "Uwaga", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (wynik == MessageBoxResult.Yes)
            {
                for (int i = 0; i < dataGridListaKlientow.SelectedItems.Count; i++)
                {
                    // Obiekty do usuniecia
                    klienciDoUsuniecia.Add(((Klient)dataGridListaKlientow.SelectedItems[i]));

                    // Usunięcie z dataGrida
                    //ObservableCollection<Klient> tmp = (ObservableCollection<Klient>)dataGridListaKlientow.ItemsSource;
                    ObservableCollection<Klient> tmp = (ObservableCollection<Klient>)filtrKlient.Widok.SourceCollection;
                    tmp.Remove((Klient)dataGridListaKlientow.SelectedItems[i]);
                }
            }
        }

        private void btnZapiszKlient_Click(object sender, RoutedEventArgs e)
        {
            //Sprawdzanie czy walidacja przebiegła pomyślnie
            if (!Validacja.IsValid(dataGridListaKlientow))
            {
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            else
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    KlientBL klientBL = new KlientBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Klient> tmp = (ObservableCollection<Klient>)filtrKlient.Widok.SourceCollection;

                    if (klientBL.aktualizujListe(tmp) == true && klientBL.usun(klienciDoUsuniecia) == true)
                    {
                        aktualizujListeKlientow();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + klienciDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    aktualizujListeKlientow();
                }
            }

        }

        private void dataGridHotele_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujListeHotel();
        }

        private void btnOdswiezHotele_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeHotel();
            MessageBox.Show("Lista została pomyślnie odświeżona", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void btnPokazSzczegolyHotele_Click(object sender, RoutedEventArgs e)
        {
            windowSzczegolyHotelu wsh = new windowSzczegolyHotelu();
            Hotel zaznaczonyHotel = (Hotel)dataGridHotele.SelectedItem;
            wsh.wyswietlaSzczegolyHotelu(zaznaczonyHotel.Id_hotelu);
            wsh.Show();
        }

        private void btnDodajHotel_Click(object sender, RoutedEventArgs e)
        {
            windowDodajHotel wdh = new windowDodajHotel();
            wdh.wyswietlaSzczegolyHotelu(0);
            wdh.Show();
        }

        private void btnUsunHotel_Click(object sender, RoutedEventArgs e)
        {
            hoteleDoUsuniecia.Clear();

            MessageBoxResult wynik = MessageBox.Show("Czy napewno chcesz usuną zaznaczone pozycje?", "Uwaga", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (wynik == MessageBoxResult.Yes)
            {
                for (int i = 0; i < dataGridHotele.SelectedItems.Count; i++)
                {
                    // Obiekty do usuniecia
                    hoteleDoUsuniecia.Add(((Hotel)dataGridHotele.SelectedItems[i]));

                    // Usunięcie z dataGrida
                    ObservableCollection<Hotel> tmp = (ObservableCollection<Hotel>)filtrHotele.Widok.SourceCollection;
                    tmp.Remove((Hotel)dataGridHotele.SelectedItems[i]);
                }
            }

        }

        private void btnZapiszZmianyHotele_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
            if (result == MessageBoxResult.Yes)
            {

                HotelBL hotelBL = new HotelBL();
                //pobieranie aktualnych pozycji do aktualizacji
                ObservableCollection<Hotel> tmp = (ObservableCollection<Hotel>)filtrHotele.Widok.SourceCollection;

                

                if (hotelBL.aktualizujListe(tmp) == true && hotelBL.usun(hoteleDoUsuniecia) == true)
                {
                    aktualizujListeHotel();
                    string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + hoteleDoUsuniecia.Count + " pozycji.";
                    MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                }
            }
            else if (result == MessageBoxResult.No)
            {
                aktualizujListeHotel();
            }

        }

       
        private void aktualizujListeKrajeMiejscowosci()
        {
            krajDoUsuniecia.Clear();
            miastoDoUsuniecia.Clear();
            lotniskoDoUsuniecia.Clear();
            wyzywienieDoUsuniecia.Clear();
            uslugiDoUsuniecia.Clear();
            kategoriaDoUsuniecia.Clear();
            // Pobieranie lotnisk
            LotniskoBL lotniskoBL = new LotniskoBL();
            cbNazwaLotniska.ItemsSource = lotniskoBL.pobierzListe();
            
            // Pobieranie miast
            MiastoBL miastoBL = new MiastoBL();
            cbNazwaMiasta.ItemsSource = miastoBL.pobierzListe();
            cbNazwaLotniskaMiasto.ItemsSource = miastoBL.pobierzListe();            

            // Pobieranie krajów
            KrajBL krajBl = new KrajBL();
            cbNazwaKraju.ItemsSource = krajBl.pobierzListe();
            cbNazwaMiastaKraja.ItemsSource = krajBl.pobierzListe();

            // Pobieranie lini lotniczych
            LinieLotniczeBL linielotniczeBL = new LinieLotniczeBL();
            cbNazwaLinieLotnicze.ItemsSource = linielotniczeBL.pobierzListe();
            rtbOpisLinieLotnicze.Text = "";

            // Pobieranie wyzywienia
            WyzywienieBL wyzywienieBL = new WyzywienieBL();
            cbNazwaWyzywienie.ItemsSource = wyzywienieBL.pobierzListe();

            // Pobieranie kategorii
            KategoriaBL kategoriaBL = new KategoriaBL();
            cbNazwaKategoria.ItemsSource = kategoriaBL.pobierzListe();

        }

             

        private void tabControlKML_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujListeKrajeMiejscowosci();
        }

        private void btnZmienMiasto_Click(object sender, RoutedEventArgs e)
        {
            
            if (cbNazwaMiasta.SelectedItem != null)
            {
                if (btnZmienMiasto.Content.Equals("Zmień"))
                {
                    tbZmienMiasto.Visibility = Visibility.Visible;
                    btnZmienMiasto.Content = "Zapisz";
                    tbZmienMiasto.Text = ((Miasto)cbNazwaMiasta.SelectedItem).Nazwa;
                    tbZmienMiasto.Focus();

                }
                else if (btnZmienMiasto.Content.Equals("Zapisz"))
                {
                    tbZmienMiasto.Visibility = Visibility.Hidden;
                    btnZmienMiasto.Content = "Zmień";
                    ((Miasto)cbNazwaMiasta.SelectedItem).Nazwa = tbZmienMiasto.Text;
                }
            }
        }

        private void btnZmienKraj_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaKraju.SelectedItem != null)
            {
                if (btnZmienKraj.Content.Equals("Zmień"))
                {
                    tbZmienKraj.Visibility = Visibility.Visible;
                    btnZmienKraj.Content = "Zapisz";
                    tbZmienKraj.Text = ((Kraj)cbNazwaKraju.SelectedItem).Nazwa;
                    tbZmienMiasto.Focus();
                }
                else if (btnZmienKraj.Content.Equals("Zapisz"))
                {
                    tbZmienKraj.Visibility = Visibility.Hidden;
                    btnZmienKraj.Content = "Zmień";
                    ((Kraj)cbNazwaKraju.SelectedItem).Nazwa = tbZmienKraj.Text;
                }
            }
        }

        private void btnZmienLotnisko_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaLotniska.SelectedItem != null)
            {
                if (btnZmienLotnisko.Content.Equals("Zmień"))
                {
                    tbZmienLotnisko.Visibility = Visibility.Visible;
                    btnZmienLotnisko.Content = "Zapisz";
                    tbZmienLotnisko.Text = ((Lotnisko)cbNazwaLotniska.SelectedItem).Nazwa;
                    tbZmienMiasto.Focus();
                }
                else if (btnZmienLotnisko.Content.Equals("Zapisz"))
                {
                    tbZmienLotnisko.Visibility = Visibility.Hidden;
                    btnZmienLotnisko.Content = "Zmień";
                    ((Lotnisko)cbNazwaLotniska.SelectedItem).Nazwa = tbZmienLotnisko.Text;
                }
            }
        }

        private void btnZmienLinieLotnicze_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaLinieLotnicze.SelectedItem != null)
            {
                if (btnZmienLinieLotnicze.Content.Equals("Zmień"))
                {
                    tbZmienLinieLotnicze.Visibility = Visibility.Visible;
                    btnZmienLinieLotnicze.Content = "Zapisz";
                    tbZmienLinieLotnicze.Text = ((LinieLotnicze)cbNazwaLinieLotnicze.SelectedItem).Nazwa;
                    tbZmienLinieLotnicze.Focus();
                }
                else if (btnZmienLinieLotnicze.Content.Equals("Zapisz"))
                {
                    tbZmienLinieLotnicze.Visibility = Visibility.Hidden;
                    btnZmienLinieLotnicze.Content = "Zmień";
                    ((LinieLotnicze)cbNazwaLinieLotnicze.SelectedItem).Nazwa = tbZmienLinieLotnicze.Text;
                }
            }
        }

        private void btnZmienWyzywienie_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaWyzywienie.SelectedItem != null)
            {
                if (btnZmienWyzywienie.Content.Equals("Zmień"))
                {
                    tbZmienWyzywienie.Visibility = Visibility.Visible;
                    btnZmienWyzywienie.Content = "Zapisz";
                    tbZmienWyzywienie.Text = ((Wyzywienie)cbNazwaWyzywienie.SelectedItem).Nazwa;
                    tbZmienWyzywienie.Focus();
                }
                else if (btnZmienWyzywienie.Content.Equals("Zapisz"))
                {
                    tbZmienWyzywienie.Visibility = Visibility.Hidden;
                    btnZmienWyzywienie.Content = "Zmień";
                    ((Wyzywienie)cbNazwaWyzywienie.SelectedItem).Nazwa = tbZmienWyzywienie.Text;
                }
            }
        }

        private void btnZmienKategoria_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaKategoria.SelectedItem != null)
            {
                if (btnZmieKategoria.Content.Equals("Zmień"))
                {
                    tbZmienKategoria.Visibility = Visibility.Visible;
                    btnZmieKategoria.Content = "Zapisz";
                    tbZmienKategoria.Text = ((Kategoria)cbNazwaKategoria.SelectedItem).Nazwa;
                    tbZmienKategoria.Focus();
                }
                else if (btnZmieKategoria.Content.Equals("Zapisz"))
                {
                    tbZmienKategoria.Visibility = Visibility.Hidden;
                    btnZmieKategoria.Content = "Zmień";
                    ((Kategoria)cbNazwaKategoria.SelectedItem).Nazwa = tbZmienKategoria.Text;
                }
            }
        }

        /// <summary>
        /// Ukrywanie textboxa gdy użytkownik klikną w poza obszar textbox-a
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tbZmienMiasto_LostFocus(object sender, RoutedEventArgs e)
        {

            if (btnZmienMiasto.Content.Equals("Zapisz"))
            {
                tbZmienMiasto.Visibility = Visibility.Hidden;
                btnZmienMiasto.Content = "Zmień";
            }
        }

        private void tbZmienKraj_LostFocus(object sender, RoutedEventArgs e)
        {
            if (btnZmienKraj.Content.Equals("Zapisz"))
            {
                tbZmienKraj.Visibility = Visibility.Hidden;
                btnZmienKraj.Content = "Zmień";
            }
        }

        private void tbZmienLotnisko_LostFocus(object sender, RoutedEventArgs e)
        {
            if (btnZmienLotnisko.Content.Equals("Zapisz"))
            {
                tbZmienLotnisko.Visibility = Visibility.Hidden;
                btnZmienLotnisko.Content = "Zmień";
            }
        }      

        private void btnOdswiezMiasto_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeKrajeMiejscowosci();
        }

        private void btnUsusnMiasto_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaMiasta.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<Miasto> miasta = cbNazwaMiasta.ItemsSource as ObservableCollection<Miasto>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if(((Miasto)cbNazwaMiasta.SelectedItem).Id_miasta!=0)
                    miastoDoUsuniecia.Add((Miasto)cbNazwaMiasta.SelectedItem);                
                miasta.Remove((Miasto)cbNazwaMiasta.SelectedItem);
                
            }
        }

        private void btnZapiszMiasto_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridMiasta))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    MiastoBL miastoBL = new MiastoBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Miasto> tmp = (ObservableCollection<Miasto>)cbNazwaMiasta.ItemsSource;

                    if (miastoBL.aktualizujListe(tmp) == true && miastoBL.usun(miastoDoUsuniecia) == true)
                    {
                        aktualizujListeKrajeMiejscowosci();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + miastoDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    // aktualizujListeKrajeMiejscowosci();
                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }

        private void btnOdswiezKraj_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeKrajeMiejscowosci();
        }

        private void btnUsusnKraj_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaKraju.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<Kraj> kraje = cbNazwaKraju.ItemsSource as ObservableCollection<Kraj>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if(((Kraj)cbNazwaKraju.SelectedItem).Id_kraju!=0)
                    krajDoUsuniecia.Add((Kraj)cbNazwaKraju.SelectedItem);
                kraje.Remove((Kraj)cbNazwaKraju.SelectedItem);

            }
        }

        private void btnZapiszKraj_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridKraje))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    KrajBL krajBL = new KrajBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Kraj> tmp = (ObservableCollection<Kraj>)cbNazwaKraju.ItemsSource;

                    if (krajBL.aktualizujListe(tmp) == true && krajBL.usun(krajDoUsuniecia) == true)
                    {
                        aktualizujListeKrajeMiejscowosci();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + krajDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    // aktualizujListeKrajeMiejscowosci();
                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }
        private void btnOdswiezLotnisko_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeKrajeMiejscowosci();
        }

        private void btnOdswiezLinieLotnicze_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeKrajeMiejscowosci();
        }

        private void btnOdswiezWyzywienie_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeKrajeMiejscowosci();
        }

        private void btnOdswiezKategoria_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeKrajeMiejscowosci();
        }

        private void btnUsusnLotnisko_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaLotniska.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<Lotnisko> lotniska = cbNazwaLotniska.ItemsSource as ObservableCollection<Lotnisko>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if(((Lotnisko)cbNazwaLotniska.SelectedItem).Id_lotniska!=0)
                    lotniskoDoUsuniecia.Add((Lotnisko)cbNazwaLotniska.SelectedItem);
                
                lotniska.Remove((Lotnisko)cbNazwaLotniska.SelectedItem);
            }
        }

        private void btnUsusnLinieLotnicze_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaLinieLotnicze.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<LinieLotnicze> linielotnicze = cbNazwaLotniska.ItemsSource as ObservableCollection<LinieLotnicze>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if (((LinieLotnicze)cbNazwaLinieLotnicze.SelectedItem).Id_linielotnicze != 0)
                    linielotniczeDoUsuniecia.Add((LinieLotnicze)cbNazwaLinieLotnicze.SelectedItem);

                linielotnicze.Remove((LinieLotnicze)cbNazwaLinieLotnicze.SelectedItem);
            }
        }

        private void btnUsunWyzywienie_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaWyzywienie.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<Wyzywienie> wyzywienie = cbNazwaLotniska.ItemsSource as ObservableCollection<Wyzywienie>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if (((Wyzywienie)cbNazwaWyzywienie.SelectedItem).Id_wyzywienie != 0)
                    wyzywienieDoUsuniecia.Add((Wyzywienie)cbNazwaWyzywienie.SelectedItem);

                wyzywienie.Remove((Wyzywienie)cbNazwaWyzywienie.SelectedItem);
            }
        }        


        private void btnUsusnKategoria_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaKategoria.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<Kategoria> kategoria = cbNazwaLotniska.ItemsSource as ObservableCollection<Kategoria>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if (((Kategoria)cbNazwaKategoria.SelectedItem).Id_kategoria != 0)
                    kategoriaDoUsuniecia.Add((Kategoria)cbNazwaKategoria.SelectedItem);

                kategoria.Remove((Kategoria)cbNazwaKategoria.SelectedItem);
            }
        }

        private void btnZapiszLotnisko_Click(object sender, RoutedEventArgs e)
        {           
            
            MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
            if (result == MessageBoxResult.Yes)
            {

                LotniskoBL lotniskoBL = new LotniskoBL();
                //pobieranie aktualnych pozycji do aktualizacji
                ObservableCollection<Lotnisko> tmp = (ObservableCollection<Lotnisko>)cbNazwaLotniska.ItemsSource;

                if (lotniskoBL.aktualizujListe(tmp) == true && lotniskoBL.usun(lotniskoDoUsuniecia) == true)
                {
                    aktualizujListeKrajeMiejscowosci();
                    string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + lotniskoDoUsuniecia.Count + " pozycji.";
                    MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                }
            }
            else if (result == MessageBoxResult.No)
            {
                // aktualizujListeKrajeMiejscowosci();
            }
        }

        private void btnZapiszLinieLotnicze_Click(object sender, RoutedEventArgs e)
        {

            MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
            if (result == MessageBoxResult.Yes)
            {

                LinieLotniczeBL linielotniczeBL = new LinieLotniczeBL();
                //pobieranie aktualnych pozycji do aktualizacji
                ObservableCollection<LinieLotnicze> tmp = (ObservableCollection<LinieLotnicze>)cbNazwaLinieLotnicze.ItemsSource;

                if (linielotniczeBL.aktualizujListe(tmp) == true && linielotniczeBL.usun(linielotniczeDoUsuniecia) == true)
                {
                    aktualizujListeKrajeMiejscowosci();
                    string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + linielotniczeDoUsuniecia.Count + " pozycji.";
                    MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                }
            }
            else if (result == MessageBoxResult.No)
            {
                // aktualizujListeKrajeMiejscowosci();
            }
        }

        private void btnZapiszWyzywienie_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridWyzywienie))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    WyzywienieBL wyzywienieBL = new WyzywienieBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Wyzywienie> tmp = (ObservableCollection<Wyzywienie>)cbNazwaWyzywienie.ItemsSource;

                    if (wyzywienieBL.aktualizujListe(tmp) == true && wyzywienieBL.usun(wyzywienieDoUsuniecia) == true)
                    {
                        aktualizujListeKrajeMiejscowosci();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + wyzywienieDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    // aktualizujListeKrajeMiejscowosci();
                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }

        private void btnZapiszKategoria_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridKategoria))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    KategoriaBL kategoriaBL = new KategoriaBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Kategoria> tmp = (ObservableCollection<Kategoria>)cbNazwaKategoria.ItemsSource;

                    if (kategoriaBL.aktualizujListe(tmp) == true && kategoriaBL.usun(kategoriaDoUsuniecia) == true)
                    {
                        aktualizujListeKrajeMiejscowosci();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + kategoriaDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    // aktualizujListeKrajeMiejscowosci();
                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }


        private void btnDodajMiasto_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                Miasto miasto = new Miasto();
                // Tworzenie obiektu Miasto
                miasto.Nazwa = windows.Nazwa;                
                ObservableCollection<Miasto> miasta = (ObservableCollection<Miasto>)cbNazwaMiasta.ItemsSource;
                miasta.Add(miasto);
                cbNazwaMiasta.ItemsSource = miasta;
                cbNazwaMiasta.SelectedItem = miasto;
            }

        }

        private void btnDodajKraj_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                Kraj kraj = new Kraj();
                // Tworzenie obiektu Miasto
                kraj.Nazwa = windows.Nazwa;
                // Dodanie go do listy Miast do dodania
                
                ObservableCollection<Kraj> kraje = (ObservableCollection<Kraj>)cbNazwaKraju.ItemsSource;
                kraje.Add(kraj);
                cbNazwaKraju.ItemsSource = kraje;
                cbNazwaKraju.SelectedItem = kraj;
            }
        }

        private void btnDodajLotnisko_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                Lotnisko lotnisko = new Lotnisko();
                // Tworzenie obiektu Miasto
                lotnisko.Nazwa = windows.Nazwa;
                // Dodanie go do listy Miast do dodania

                ObservableCollection<Lotnisko> lotniska = (ObservableCollection<Lotnisko>)cbNazwaLotniska.ItemsSource;
                lotniska.Add(lotnisko);
                cbNazwaLotniska.ItemsSource = lotniska;
                cbNazwaLotniska.SelectedItem = lotnisko;
            }
        }

        private void btnDodajLinieLotnicze_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                LinieLotnicze linielotnicze = new LinieLotnicze();
                // Tworzenie obiektu Miasto
                linielotnicze.Nazwa = windows.Nazwa;
                // Dodanie go do listy Miast do dodania

                ObservableCollection<LinieLotnicze> listalinielotnicze = (ObservableCollection<LinieLotnicze>)cbNazwaLinieLotnicze.ItemsSource;
                listalinielotnicze.Add(linielotnicze);
                cbNazwaLinieLotnicze.ItemsSource = listalinielotnicze;
                cbNazwaLinieLotnicze.SelectedItem = linielotnicze;
            }
        }

        private void btnDodajWyzywienie_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                Wyzywienie wyzywienie = new Wyzywienie();
                // Tworzenie obiektu Miasto
                wyzywienie.Nazwa = windows.Nazwa;
                // Dodanie go do listy Miast do dodania

                ObservableCollection<Wyzywienie> listawyzywienie = (ObservableCollection<Wyzywienie>)cbNazwaWyzywienie.ItemsSource;
                listawyzywienie.Add(wyzywienie);
                cbNazwaWyzywienie.ItemsSource = listawyzywienie;
                cbNazwaWyzywienie.SelectedItem = wyzywienie;
            }
        }

        private void btnDodajKategoria_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                Kategoria kategoria = new Kategoria();
                // Tworzenie obiektu Miasto
                kategoria.Nazwa = windows.Nazwa;
                // Dodanie go do listy Miast do dodania

                ObservableCollection<Kategoria> listakategoria = (ObservableCollection<Kategoria>)cbNazwaKategoria.ItemsSource;
                listakategoria.Add(kategoria);
                cbNazwaKategoria.ItemsSource = listakategoria;
                cbNazwaKategoria.SelectedItem = kategoria;
            }
        }

        private void dataGridListaOfert_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujListeOferta();
        }

        private void aktualizujListeOferta()
        {
            ofertaDoUsuniecia.Clear();

            OfertaBL ofertaBL = new OfertaBL();
            //dataGridListaOfert.ItemsSource = 

            // Dodawanie widoku do kontrolki od filtrowania
            ObservableCollection<Oferta> lista = ofertaBL.pobierzListe();
            filtrOferty.Widok = CollectionViewSource.GetDefaultView(lista);
            dataGridListaOfert.ItemsSource = filtrOferty.Widok;
            
            // Przekazywanie nazw kolumn
            filtrOferty.cbNazwaColumny.ItemsSource = new String[] { "ID", "Skrót", "Nazwa", "Kategoria", "Ilość terminów"};
            // Dodawanie filtru            
            filtrOferty.Filtr = new Predicate<object>(filtrOferty.filtrListaOfert);
        }

        private void btnOdswiezOferte_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeOferta();
            MessageBox.Show("Lista została pomyślnie odświeżona", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void btnDodajOferte_Click(object sender, RoutedEventArgs e)
        {
            windowDodajOferta wdo = new windowDodajOferta();
            // Wartość 0 oznacza ze bedzie dodwanay nowy obiekt
            wdo.inicjalizujZawartosc();
            wdo.ShowDialog();

            aktualizujListeOferta();
        }

        private void btnZapiszOferte_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(dataGridListaOfert))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    OfertaBL ofertaBL = new OfertaBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Oferta> tmp = (ObservableCollection<Oferta>)filtrOferty.Widok.SourceCollection;

                    if (ofertaBL.aktualizujListe(tmp) == true && ofertaBL.usun(ofertaDoUsuniecia) == true)
                    {
                        aktualizujListeOferta();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + ofertaDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    aktualizujListeOferta();
                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
                
        }

        private void btnUsunOferte_Click(object sender, RoutedEventArgs e)
        {
            if (dataGridListaOfert.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy 
                
                ObservableCollection<Oferta> oferty = filtrOferty.Widok.SourceCollection as ObservableCollection<Oferta>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if (((Oferta)dataGridListaOfert.SelectedItem).Id_oferta != 0)
                    ofertaDoUsuniecia.Add((Oferta)dataGridListaOfert.SelectedItem);

                oferty.Remove((Oferta)dataGridListaOfert.SelectedItem);
            }
        }

        private void dataGridListaTerminow_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujListeTerminow();
        }

        private void aktualizujListeTerminow()
        {
            TerminBL terminBL = new TerminBL();          

            // Dodawanie widoku do kontrolki od filtrowania
            filtrTerminy.Widok = CollectionViewSource.GetDefaultView(terminBL.pobierzListe());
            dataGridListaTerminow.ItemsSource = filtrTerminy.Widok;            

            // Przekazywanie nazw kolumn
            filtrTerminy.cbNazwaColumny.ItemsSource = new String[] { "ID", "Oferta", "Ilość dni"};
            // Dodawanie filtru            
            filtrTerminy.Filtr = new Predicate<object>(filtrTerminy.filtrListaTerminow);
        }

        private void btnOdswiezTermin_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeTerminow();
            MessageBox.Show("Lista została pomyślnie odświeżona", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void btnUsunTermin_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult wynik = MessageBox.Show("Czy napewno chcesz usuną zaznaczone pozycje?", "Uwaga", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (wynik == MessageBoxResult.Yes)
            {
                ObservableCollection<Termin> listaTerminow = (ObservableCollection<Termin>)filtrTerminy.Widok.SourceCollection;
                for (int i = 0; i < dataGridListaTerminow.SelectedItems.Count; i++)
                {
                    // Obiekty do usuniecia
                    terminDoUsuniecia.Add(((Termin)dataGridListaTerminow.SelectedItems[i]));
                    // Usunięcie z dataGrida
                    listaTerminow.Remove((Termin)dataGridListaTerminow.SelectedItems[i]);                
                }
                dataGridListaTerminow.ItemsSource = listaTerminow;
            }

        }

        private void btnZapiszZmianyTermin_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(dataGridListaTerminow))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    TerminBL terminBL = new TerminBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Termin> tmp = (ObservableCollection<Termin>)filtrTerminy.Widok.SourceCollection;

                    if (terminBL.aktualizujListe(tmp) == true && terminBL.usun(terminDoUsuniecia) == true)
                    {
                        aktualizujListeTerminow();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + terminDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    aktualizujListeTerminow();
                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);

        }

        private void btnPokazSzczegolyTermin_Click(object sender, RoutedEventArgs e)
        {
            if (dataGridListaTerminow.SelectedItem != null)
            {
                windowSzczegolyTermin wst = new windowSzczegolyTermin();
                wst.inicjalizujZawartosc(((Termin)dataGridListaTerminow.SelectedItem).Id_termin);
                wst.Show();
            }
        }

        private void btnDodajTermin_Click(object sender, RoutedEventArgs e)
        {
            windowDodajTermin wdt = new windowDodajTermin();
            wdt.inicjalizujZawartosc();
            wdt.Show();

        }

        private void btnPokazSzczegolyOferta_Click(object sender, RoutedEventArgs e)
        {
            if (dataGridListaOfert.SelectedItem != null)
            {
                windowSzczegolyOferta wso = new windowSzczegolyOferta();
                Oferta oferta = (Oferta)dataGridListaOfert.SelectedItem;

                wso.inicjalizujZawartosc(oferta.Id_oferta);
                wso.ShowDialog();
                aktualizujListeOferta();
            }
        }

        private void dataGridListaRezerwacji_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujListeRezerwacji();
        }

        private void aktualizujListeRezerwacji()
        {
            RezerwacjaBL rezerwacjaBL = new RezerwacjaBL();
           
            // Uzupelnianie combobox
            string[] status = { "niepotwierdzone", "potwierdzona" };
            cbColumnaStatusRezerwacja.ItemsSource = status;

            OddzialBL oddzialBL = new OddzialBL();
            cbColumnaOddzialRezerwacja.ItemsSource = oddzialBL.pobierzListe();

            // Dodawanie widoku do kontrolki od filtrowania
            filtrRezerwacja.Widok = CollectionViewSource.GetDefaultView( rezerwacjaBL.pobierzListe());
            dataGridListaRezerwacji.ItemsSource = filtrRezerwacja.Widok;

            // Przekazywanie nazw kolumn
            filtrRezerwacja.cbNazwaColumny.ItemsSource = new String[] { "ID", "Imie", "Nazwisko", "Telefon","Status","Oddział" };
            // Dodawanie filtru            
            filtrRezerwacja.Filtr = new Predicate<object>(filtrRezerwacja.filtrListaRezerwacji);


        }

        private void btnOdswiezRezerwacja_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeRezerwacji();
            MessageBox.Show("Lista została pomyślnie odświeżona", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void btnUsunRezerwacja_Click(object sender, RoutedEventArgs e)
        {
            if (dataGridListaRezerwacji.SelectedItem != null)
            {
                MessageBoxResult wynik = MessageBox.Show("Czy napewno chcesz usuną zaznaczone pozycje?", "Uwaga", MessageBoxButton.YesNo, MessageBoxImage.Question);

                if (wynik == MessageBoxResult.Yes)
                {
                    ObservableCollection<Rezerwacja> listaRezerwacji = (ObservableCollection<Rezerwacja>)filtrRezerwacja.Widok.SourceCollection;
                    for (int i = 0; i < dataGridListaRezerwacji.SelectedItems.Count; i++)
                    {
                        // Obiekty do usuniecia
                        rezerwacjaDoUsuniecia.Add(((Rezerwacja)dataGridListaRezerwacji.SelectedItems[i]));
                        // Usunięcie z dataGrida
                        listaRezerwacji.Remove((Rezerwacja)dataGridListaRezerwacji.SelectedItems[i]);
                    }
                    dataGridListaRezerwacji.ItemsSource = listaRezerwacji;
                }
            }
        }

        private void btnZapiszZmianyRezerwacja_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(dataGridListaRezerwacji))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    RezerwacjaBL rezerwacjaBL = new RezerwacjaBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Rezerwacja> tmp = (ObservableCollection<Rezerwacja>)filtrRezerwacja.Widok.SourceCollection;

                    if (rezerwacjaBL.aktualizujListe(tmp) == true && rezerwacjaBL.usun(rezerwacjaDoUsuniecia) == true)
                    {
                        aktualizujListeRezerwacji();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + rezerwacjaDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    aktualizujListeRezerwacji();
                }
            }else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }

        private void btnPokazSzczegolyRezerwacja_Click(object sender, RoutedEventArgs e)
        {
            windowSzczegolyRezerwacji wsr = new windowSzczegolyRezerwacji();

            Rezerwacja rezerwacja = (dataGridListaRezerwacji.SelectedItem as Rezerwacja);

            wsr.inicjalizujZawartosc(rezerwacja.Id_rezerwacja);
            wsr.Show();
        }

        private void btnDodajKlient_Click(object sender, RoutedEventArgs e)
        {
            windowDodajKlienta wdk = new windowDodajKlienta();
            wdk.ShowDialog();

            if (wdk.DialogResult == true)
            {
                aktualizujListeKlientow();
            }
        }

        private void btnDodajRezerwacja_Click(object sender, RoutedEventArgs e)
        {
            windowDodajRezerwacje wdr = new windowDodajRezerwacje();
            wdr.pracownikZalogowany = this.pracownikZalogowany;
            wdr.Show();
        }

        private void dataGridListeOdbiorcowEmail_Loaded(object sender, RoutedEventArgs e)
        {
            akutalizujObiorcowEmail();
        }

        private void akutalizujObiorcowEmail()
        {
            KlientBL klientBL = new KlientBL();
            ObservableCollection<Klient> listaKlientow = klientBL.pobierzListeEmail();

            foreach(Klient klient in listaKlientow){
                klient.Zaznaczony = false;
            }
            dataGridListeOdbiorcowEmail.ItemsSource = listaKlientow;       
        }       

        private void cbZaznaczWszystkichEmail_Checked(object sender, RoutedEventArgs e)
        {
            ObservableCollection<Klient> listaKlientow = dataGridListeOdbiorcowEmail.ItemsSource as ObservableCollection<Klient>;
            foreach (Klient klient in listaKlientow)
            {
                klient.Zaznaczony = true;
            }
            dataGridListeOdbiorcowEmail.ItemsSource = listaKlientow;
        }

        private void cbZaznaczWszystkichEmail_Unchecked(object sender, RoutedEventArgs e)
        {
            ObservableCollection<Klient> listaKlientow = dataGridListeOdbiorcowEmail.ItemsSource as ObservableCollection<Klient>;
            foreach (Klient klient in listaKlientow)
            {
                klient.Zaznaczony = false;
            }
            dataGridListeOdbiorcowEmail.ItemsSource = listaKlientow;
        }

        private void dataGridListeOdbiorcowEmail_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            bool zaznaczony = ((Klient)dataGridListeOdbiorcowEmail.SelectedItem).Zaznaczony;
            if (zaznaczony == true)
            {
                ((Klient)dataGridListeOdbiorcowEmail.SelectedItem).Zaznaczony = false;
            }
            else
                ((Klient)dataGridListeOdbiorcowEmail.SelectedItem).Zaznaczony = true;

        }

        private void btnWyslijEmail_Click(object sender, RoutedEventArgs e)
        {
            windowEmailer we = new windowEmailer();

            // Tworzenie listy odbiorców
            ObservableCollection<Klient> listaodbiorcow = new ObservableCollection<Klient>();
            foreach (Klient klient in dataGridListeOdbiorcowEmail.ItemsSource)
            {
                if (klient.Zaznaczony == true)
                {
                    listaodbiorcow.Add(klient);
                }
            }
            if (listaodbiorcow.Count > 0)
            {
                we.inicjalizujZawartosc(listaodbiorcow);
                we.Show();
            }
            else
            {
                MessageBox.Show("Musisz zaznaczyć adresata", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void dataGridListeOdbiorcowSms_Loaded(object sender, RoutedEventArgs e)
        {
            akutalizujObiorcowSms();
        }

        private void akutalizujObiorcowSms()
        {
            KlientBL klientBL = new KlientBL();
            ObservableCollection<Klient> listaKlientow = klientBL.pobierzListeSMS();

            foreach (Klient klient in listaKlientow)
            {
                klient.Zaznaczony = false;
            }
            dataGridListeOdbiorcowSms.ItemsSource = listaKlientow;
        }     

        private void dataGridListeOdbiorcowSms_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            bool zaznaczony = ((Klient)dataGridListeOdbiorcowSms.SelectedItem).Zaznaczony;
            if (zaznaczony == true)
            {
                ((Klient)dataGridListeOdbiorcowSms.SelectedItem).Zaznaczony = false;
            }
            else
                ((Klient)dataGridListeOdbiorcowSms.SelectedItem).Zaznaczony = true;
        }

        private void cbZaznaczWszystkichSms_Checked(object sender, RoutedEventArgs e)
        {
            ObservableCollection<Klient> listaKlientow = dataGridListeOdbiorcowSms.ItemsSource as ObservableCollection<Klient>;
            foreach (Klient klient in listaKlientow)
            {
                klient.Zaznaczony = true;
            }
            dataGridListeOdbiorcowSms.ItemsSource = listaKlientow;
        }

        private void cbZaznaczWszystkichSms_Unchecked(object sender, RoutedEventArgs e)
        {
            ObservableCollection<Klient> listaKlientow = dataGridListeOdbiorcowSms.ItemsSource as ObservableCollection<Klient>;
            foreach (Klient klient in listaKlientow)
            {
                klient.Zaznaczony = false;
            }
            dataGridListeOdbiorcowSms.ItemsSource = listaKlientow;
        }

        private void btnWyslijSms_Click(object sender, RoutedEventArgs e)
        {
            windowSms we = new windowSms();

            // Tworzenie listy odbiorców
            ObservableCollection<Klient> listaodbiorcow = new ObservableCollection<Klient>();
            foreach (Klient klient in dataGridListeOdbiorcowSms.ItemsSource)
            {
                if (klient.Zaznaczony == true)
                {
                    listaodbiorcow.Add(klient);
                }
            }
            if (listaodbiorcow.Count > 0)
            {
                we.inicjalizujZawartosc(listaodbiorcow);
                we.Show();
            }
            else
            {
                MessageBox.Show("Musisz zaznaczyć adresata", "Uwaga!", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }            

        private void gridOddzialy_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujOddzialy();
        }

        private void aktualizujOddzialy()
        {
            OddzialBL oddzialBL = new OddzialBL();
            cbNazwaOddzial.ItemsSource = oddzialBL.pobierzListe();
        }        

       
        private void gridTabUstawienie_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujDaneFirma();
        }

        private void aktualizujDaneFirma()
        {
            DaneFirmaBL daneFirmaBL = new DaneFirmaBL();
            gridTabUstawienie.DataContext = daneFirmaBL.pobierz("");

            IList<string> wojewodztwa = new List<String>();
            wojewodztwa.Add("mazowieckie");
            wojewodztwa.Add("podlaskie");
            wojewodztwa.Add("lubelskie");
            wojewodztwa.Add("śląskie");
            wojewodztwa.Add("pomorskie");
            wojewodztwa.Add("zachodnio-pomorskie");
            wojewodztwa.Add("kujawsko-pomorskie");
            wojewodztwa.Add("warmińsko-mazurskie");
            wojewodztwa.Add("lubuskie");
            wojewodztwa.Add("wielkopolskie");
            wojewodztwa.Add("małopolskie");
            wojewodztwa.Add("dolno-śląskie");
            wojewodztwa.Add("opolskie");
            wojewodztwa.Add("podkarpackie");
            wojewodztwa.Add("świętokrzyskie");
            wojewodztwa.Add("łódzkie");
            cbWojewodztwoOddzial.ItemsSource = wojewodztwa;
        }

        private void btnZapiszFirma_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridFirma) && Validacja.IsValid(gridSmtp) && Validacja.IsValid(gridSms))
            {

                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {
                    DaneFirmaBL dfBL = new DaneFirmaBL();
                    DaneFirma df = gridTabUstawienie.DataContext as DaneFirma;
                    dfBL.aktualizuj(df);
                    string komunikat = "Operacja zakończona sukcesem.";
                    MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);

                }
                else if (result == MessageBoxResult.No)
                {
                    // aktualizujListeKrajeMiejscowosci();
                }
            }
            else
            {
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btnAnulujFirma_Click(object sender, RoutedEventArgs e)
        {
            aktualizujDaneFirma();
            MessageBox.Show("Dane zostały pomyślnie odświeżone", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void btnZapiszOddzial_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridOddzial))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);

                OddzialBL oddzialBL = new OddzialBL();
                //pobieranie aktualnych pozycji do aktualizacji
                ObservableCollection<Oddzial> tmp = (ObservableCollection<Oddzial>)cbNazwaOddzial.ItemsSource;

                if (oddzialBL.aktualizujListe(tmp) == true && oddzialBL.usun(oddzialDoUsuniecia) == true)
                {
                    aktualizujOddzialy();
                    string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + oddzialDoUsuniecia.Count + " pozycji.";
                    MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                }
            }
            else
            {
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btnOdswiezOddzial_Click(object sender, RoutedEventArgs e)
        {
            aktualizujOddzialy();
            MessageBox.Show("Dane zostały pomyślnie odświeżone", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void btnDodajOddzial_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                Oddzial oddzial = new Oddzial();
                // Tworzenie obiektu Oddzial
                oddzial.Nazwa = windows.Nazwa;
                ObservableCollection<Oddzial> oddzialy = (ObservableCollection<Oddzial>)cbNazwaOddzial.ItemsSource;
                oddzialy.Add(oddzial);
                cbNazwaOddzial.ItemsSource = oddzialy;
                cbNazwaOddzial.SelectedItem = oddzial;
            }
        }

        private void btnUsunOddzial_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaOddzial.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<Oddzial> oddzialy = cbNazwaOddzial.ItemsSource as ObservableCollection<Oddzial>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if (((Oddzial)cbNazwaOddzial.SelectedItem).Id_oddzial != 0)
                    oddzialDoUsuniecia.Add((Oddzial)cbNazwaOddzial.SelectedItem);
                oddzialy.Remove((Oddzial)cbNazwaOddzial.SelectedItem);
            }
        }

        private void btnZmienOddzial_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaOddzial.SelectedItem != null)
            {
                if (btnZmienOddzial.Content.Equals("Zmień"))
                {
                    tbZmienOddzial.Visibility = Visibility.Visible;
                    btnZmienOddzial.Content = "Zapisz";
                    tbZmienOddzial.Text = ((Miasto)cbNazwaMiasta.SelectedItem).Nazwa;
                    tbZmienOddzial.Focus();

                }
                else if (btnZmienOddzial.Content.Equals("Zapisz"))
                {
                    tbZmienOddzial.Visibility = Visibility.Hidden;
                    btnZmienOddzial.Content = "Zmień";
                    ((Oddzial)cbNazwaOddzial.SelectedItem).Nazwa = tbZmienOddzial.Text;
                }
            }
        }

        private void btnZmienHasloSmtp_Click(object sender, RoutedEventArgs e)
        {
            DaneFirma df = gridTabUstawienie.DataContext as DaneFirma;
            if (btnZmienHasloSmtp.Content.Equals("Zmień"))
            {
                spZmianaHaslaSmtp.IsEnabled = true ;
                btnZmienHasloSmtp.Content = "Zapisz";                
                spZmianaHaslaSmtp.Focus();

            }
            else if (btnZmienHasloSmtp.Content.Equals("Zapisz"))
            {
                if (!string.IsNullOrEmpty(pbStareHasloSmtp.Password) && !string.IsNullOrEmpty(pbNoweHasloSmtp.Password))
                {                  
                        
                    string stareHasloSmtp = pbStareHasloSmtp.Password;
                    //string md5hash = GetMd5Hash(stareHasloSmtp);
                    if (df.Haslo_smtp.Equals(stareHasloSmtp))
                    {
                        df.Haslo_smtp = pbNoweHasloSmtp.Password;//GetMd5Hash(pbNoweHasloSmtp.Password);
                        gridTabUstawienie.DataContext = df;
                        MessageBox.Show("Hasło zmienione.\nKliknij \"Zapisz zmiany\" aby zachować ustawienia.", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Podane stare hasło jest nieprawidłowe", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    spZmianaHaslaSmtp.IsEnabled = false;
                    btnZmienHasloSmtp.Content = "Zmień";
                    pbNoweHasloSmtp.Password = "";
                    pbStareHasloSmtp.Password = "";
                }
                else
                {
                    MessageBox.Show("Pola muszą być wypełnione.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }

        }

        private string GetMd5Hash(string input)
        {
            System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] bs = Encoding.UTF8.GetBytes(input);
            bs = x.ComputeHash(bs);

            StringBuilder sb = new StringBuilder();
            foreach (byte b in bs)
            {
                sb.Append(b.ToString("x2").ToLower());
            }
            return sb.ToString();
        }

        private void btnZmienHasloSms_Click(object sender, RoutedEventArgs e)
        {
            DaneFirma df = gridTabUstawienie.DataContext as DaneFirma;
            if (btnZmienHasloSms.Content.Equals("Zmień"))
            {
                spZmianaHaslaSms.IsEnabled = true;
                btnZmienHasloSms.Content = "Zapisz";
                spZmianaHaslaSms.Focus();

            }
            else if (btnZmienHasloSms.Content.Equals("Zapisz"))
            {
                if (!string.IsNullOrEmpty(pbStareHasloSms.Password) && !string.IsNullOrEmpty(pbNoweHasloSms.Password))
                {

                    string stareHasloSms = pbStareHasloSms.Password;
                    string md5hash = GetMd5Hash(stareHasloSms);
                    MessageBox.Show(md5hash);
                    if (df.Haslo_sms.Equals(md5hash))
                    {
                        df.Haslo_sms = GetMd5Hash(pbNoweHasloSms.Password);
                        gridTabUstawienie.DataContext = df;
                        MessageBox.Show("Hasło zmienione.\nKliknij \"Zapisz zmiany\" aby zachować ustawienia.", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Podane stare hasło jest nieprawidłowe", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    spZmianaHaslaSms.IsEnabled = false;
                    btnZmienHasloSms.Content = "Zmień";
                    pbNoweHasloSms.Password = "";
                    pbStareHasloSms.Password = "";
                }
                else
                {
                    MessageBox.Show("Pola muszą być wypełnione.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }

        private void TabControl_Loaded(object sender, RoutedEventArgs e)
        {
            if (pracownikZalogowany.Id_uprawnienia == 1)
            {
                tabListaPracownikow.Visibility = Visibility.Collapsed;
                tabInneUstawienia.Visibility = Visibility.Collapsed;
            }
        }

        private void btnGaleriaMiasto_Click(object sender, RoutedEventArgs e)
        {
            Miasto miasto = (Miasto)cbNazwaMiasta.SelectedItem;

            windowGaleria wg = new windowGaleria();
            wg.inicjalizujZawartosc(miasto.Id_galeria);
            wg.ShowDialog();
            if (wg.DialogResult.Value == true)
            {
                miasto.Galeria = wg.Galeria;
                miasto.Id_galeria = wg.Galeria.Id_galeria;
                cbNazwaMiasta.SelectedItem = miasto;
            }

        }

        private void cbNazwaMiasta_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbNazwaMiasta.SelectedIndex >= 0)
            {
                btnGaleriaMiasto.Visibility = Visibility.Visible;
                btnUsusnMiasto.Visibility = Visibility.Visible;
            }
            else
            {
                btnGaleriaMiasto.Visibility = Visibility.Hidden;
                btnUsusnMiasto.Visibility = Visibility.Hidden;
            }
        }

        private void cbNazwaKraju_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbNazwaKraju.SelectedIndex >= 0)
            {
                btnGaleriaKraj.Visibility = Visibility.Visible;
                btnUsusnKraj.Visibility = Visibility.Visible;
            }
            else
            {
                btnGaleriaKraj.Visibility = Visibility.Hidden;
                btnUsusnKraj.Visibility = Visibility.Hidden;
            }
        }

        private void cbNazwaLotniska_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbNazwaLotniska.SelectedIndex >= 0)
            {

                btnUsusnLotnisko.Visibility = Visibility.Visible;
            }
            else
            {
                
                btnUsusnLotnisko.Visibility = Visibility.Hidden;
            }
        }

        private void cbNazwaLinieLotnicze_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbNazwaLinieLotnicze.SelectedIndex >= 0)
            {

                btnUsusnLinieLotnicze.Visibility = Visibility.Visible;
            }
            else
            {

                btnUsusnLinieLotnicze.Visibility = Visibility.Hidden;
            }
        }

        private void cbNazwaWyzywienie_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbNazwaWyzywienie.SelectedIndex >= 0)
            {

                btnUsunWyzywienie.Visibility = Visibility.Visible;
            }
            else
            {

                btnUsunWyzywienie.Visibility = Visibility.Hidden;
            }
        }

        private void cbNazwaKategoria_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbNazwaKategoria.SelectedIndex >= 0)
            {

                btnUsusnKategoria.Visibility = Visibility.Visible;
            }
            else
            {

                btnUsusnKategoria.Visibility = Visibility.Hidden;
            }
        }

        private void btnGaleriaKraj_Click(object sender, RoutedEventArgs e)
        {
            Kraj kraj = (Kraj)cbNazwaKraju.SelectedItem;

            windowGaleria wg = new windowGaleria();
            wg.inicjalizujZawartosc(kraj.Id_galeria);
            wg.ShowDialog();
            if (wg.DialogResult.Value == true)
            {
                kraj.Galeria = wg.Galeria;
                kraj.Id_galeria = wg.Galeria.Id_galeria;
                cbNazwaKraju.SelectedItem = kraj;
            }
        }

        private void rtbOpisSkrotMiasto_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextRange tr = new TextRange(rtbOpisSkrotMiasto.Document.ContentStart, rtbOpisSkrotMiasto.Document.ContentEnd);
            lblIloscZnakowOpisSkrotMiasto.Content = string.Format("Pozostało znaków: {0}",300-tr.Text.Length);
            if (tr.Text.Length > 300)
            {
                MessageBox.Show("Wprowadzony opis skrócony jest zadługi", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);
                string tmp = tr.Text.Remove(298);
                new TextRange(rtbOpisSkrotMiasto.Document.ContentStart, rtbOpisSkrotMiasto.Document.ContentEnd).Text = tmp;
            }
        }

        private void rtbOpisSkrotKraj_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextRange tr = new TextRange(rtbOpisSkrotKraj.Document.ContentStart, rtbOpisSkrotKraj.Document.ContentEnd);
            lblIloscZnakowOpisSkrotKraj.Content = string.Format("Pozostało znaków: {0}", 300 - tr.Text.Length);
            if (tr.Text.Length > 300)
            {
                MessageBox.Show("Wprowadzony opis skrócony jest zadługi","Uwaga",MessageBoxButton.OK,MessageBoxImage.Warning);
                string tmp = tr.Text.Remove(298);
                new TextRange(rtbOpisSkrotKraj.Document.ContentStart, rtbOpisSkrotKraj.Document.ContentEnd).Text = tmp;
            }
        }

        private void gridUslugiDodatkowe_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujDodatkoweUslugi();
        }

        private void aktualizujDodatkoweUslugi()
        {
            
            DodatkoweUslugiBL duBL = new DodatkoweUslugiBL();

            dataGridDodatkoweUslugi.ItemsSource = duBL.pobierzListe();
        }

        private void btnUsusnDodatkowaUsluga_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult wynik = MessageBox.Show("Czy napewno chcesz usuną zaznaczone pozycje?", "Uwaga", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (wynik == MessageBoxResult.Yes)
            {
                for (int i = 0; i < dataGridDodatkoweUslugi.SelectedItems.Count; i++)
                {
                    // Obiekty do usuniecia
                    uslugiDoUsuniecia.Add(((DodatkoweUslugi)dataGridDodatkoweUslugi.SelectedItems[i]));

                    // Usunięcie z dataGrida
                    ObservableCollection<DodatkoweUslugi> tmp = (ObservableCollection<DodatkoweUslugi>)dataGridDodatkoweUslugi.ItemsSource;
                    tmp.Remove((DodatkoweUslugi)dataGridDodatkoweUslugi.SelectedItems[i]);
                }
            }
        }

        private void btnOdswiezDodatkowaUsluga_Click(object sender, RoutedEventArgs e)
        {
            aktualizujDodatkoweUslugi();
            MessageBox.Show("Lista została pomyślnie odświeżona", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);

        }

        private void btnDodajDodatkowaUsluga_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj wd = new windowDodaj();
            wd.ShowDialog();

            if (wd.DialogResult.Value == true)
            {
                ObservableCollection<DodatkoweUslugi> dodatkoweUslugi = dataGridDodatkoweUslugi.ItemsSource as ObservableCollection<DodatkoweUslugi>;
                DodatkoweUslugi du = new DodatkoweUslugi();
                du.Nazwa = wd.Nazwa;
                dodatkoweUslugi.Add(du);
                dataGridDodatkoweUslugi.ItemsSource = dodatkoweUslugi;
                aktualizujDodatkoweUslugi();
            }
        }

        private void btnZapiszDodatkowaUsluga_Click(object sender, RoutedEventArgs e)
        {
            //Sprawdzanie czy walidacja przebiegła pomyślnie
            if (!Validacja.IsValid(dataGridDodatkoweUslugi))
            {
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            else
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    DodatkoweUslugiBL duBL = new DodatkoweUslugiBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<DodatkoweUslugi> tmp = (ObservableCollection<DodatkoweUslugi>)dataGridDodatkoweUslugi.ItemsSource;
                    
                    if (duBL.aktualizujListe(tmp) == true && duBL.usun(uslugiDoUsuniecia) == true)
                    {
                        aktualizujDodatkoweUslugi();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + uslugiDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    aktualizujDodatkoweUslugi();
                }
            }
        }

        private void dataGridDodatkoweUslugi_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
        {
            btnUsusnDodatkowaUsluga.Visibility = Visibility.Visible;
        }

        private void dataGridListaOfert_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            btnPokazSzczegolyOferta.Visibility = Visibility.Visible;
        }

        private void dataGridHotele_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            btnPokazSzczegolyHotele.Visibility = Visibility.Visible;
        }

        private void dataGridListaTerminow_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            btnPokazSzczegolyTermin.Visibility = Visibility.Visible;
        }

        private void dataGridListaRezerwacji_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            btnPokazSzczegolyRezerwacja.Visibility = Visibility.Visible;
        }

        private void btnPokazSzczegolyPracownik_Click(object sender, RoutedEventArgs e)
        {
            if (dataGridListaPracownikow.SelectedItem != null)
            {
                Pracownik pracownik = dataGridListaPracownikow.SelectedItem as Pracownik;
                windowSzczegolyPracownika wsp = new windowSzczegolyPracownika();
                wsp.inicjalizujZawartosc(pracownik.Id_pracownik);
                wsp.ShowDialog();
            }

            
        }

        private void dataGridListaPracownikow_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            btnPokazSzczegolyPracownik.Visibility = Visibility.Visible;
        }

        private void dataGridListaRezerwacjiDlaOddzialu_Loaded(object sender, RoutedEventArgs e)
        {
            aktualizujListeRezerwacjiDlaOddzialu();
        }

        private void aktualizujListeRezerwacjiDlaOddzialu()
        {
            RezerwacjaBL rezerwacjaBL = new RezerwacjaBL();

            // Uzupelnianie combobox
            string[] status = { "niepotwierdzone", "potwierdzona" };
            cbColumnaStatusRezerwacjaDlaOddzialu.ItemsSource = status;

            OddzialBL oddzialBL = new OddzialBL();            
            cbColumnaOddzialRezerwacjaDlaOddzialu.ItemsSource = oddzialBL.pobierzListe();

            // Dodawanie widoku do kontrolki od filtrowania
            ObservableCollection<Rezerwacja> listaRezerwacji = new ObservableCollection<Rezerwacja>();
            foreach (Rezerwacja rezerwacja in rezerwacjaBL.pobierzListe())
            {
                if (rezerwacja.Status.Equals("niepotwierdzone") && rezerwacja.Id_oddzial == pracownikZalogowany.Id_oddzial)
                {
                    listaRezerwacji.Add(rezerwacja);
                }
            }            
            filtrRezerwacjaDlaOddzialu.Widok = CollectionViewSource.GetDefaultView(listaRezerwacji);
            dataGridListaRezerwacjiDlaOddzialu.ItemsSource = filtrRezerwacjaDlaOddzialu.Widok;

            // Przekazywanie nazw kolumn
            filtrRezerwacjaDlaOddzialu.cbNazwaColumny.ItemsSource = new String[] { "ID", "Imie", "Nazwisko", "Telefon", "Status", "Oddział" };
            // Dodawanie filtru            
            filtrRezerwacjaDlaOddzialu.Filtr = new Predicate<object>(filtrRezerwacjaDlaOddzialu.filtrListaRezerwacji);


        }

        private void btnOdswiezRezerwacjaDlaOddzialu_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeRezerwacjiDlaOddzialu();
            MessageBox.Show("Lista została pomyślnie odświeżona", "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
        }

        private void btnUsunRezerwacjaDlaOddzialu_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult wynik = MessageBox.Show("Czy napewno chcesz usuną zaznaczone pozycje?", "Uwaga", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (wynik == MessageBoxResult.Yes)
            {
                ObservableCollection<Rezerwacja> listaRezerwacji = (ObservableCollection<Rezerwacja>)filtrRezerwacjaDlaOddzialu.Widok.SourceCollection;
                for (int i = 0; i < dataGridListaRezerwacjiDlaOddzialu.SelectedItems.Count; i++)
                {
                    // Obiekty do usuniecia
                    rezerwacjaDoUsuniecia.Add(((Rezerwacja)dataGridListaRezerwacjiDlaOddzialu.SelectedItems[i]));
                    // Usunięcie z dataGrida
                    listaRezerwacji.Remove((Rezerwacja)dataGridListaRezerwacjiDlaOddzialu.SelectedItems[i]);
                }
                dataGridListaRezerwacjiDlaOddzialu.ItemsSource = listaRezerwacji;
            }
        }

        private void btnDodajRezerwacjaDlaOddzialu_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btnPokazSzczegolyRezerwacjaDlaOddzialu_Click(object sender, RoutedEventArgs e)
        {
            windowSzczegolyRezerwacji wsr = new windowSzczegolyRezerwacji();

            Rezerwacja rezerwacja = (dataGridListaRezerwacjiDlaOddzialu.SelectedItem as Rezerwacja);

            wsr.inicjalizujZawartosc(rezerwacja.Id_rezerwacja);
            wsr.Show();
        }

        private void btnZapiszZmianyRezerwacjaDlaOddzialu_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(dataGridListaRezerwacjiDlaOddzialu))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    RezerwacjaBL rezerwacjaBL = new RezerwacjaBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Rezerwacja> tmp = (ObservableCollection<Rezerwacja>)filtrRezerwacjaDlaOddzialu.Widok.SourceCollection;

                    if (rezerwacjaBL.aktualizujListe(tmp) == true && rezerwacjaBL.usun(rezerwacjaDoUsuniecia) == true)
                    {
                        aktualizujListeRezerwacjiDlaOddzialu();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + rezerwacjaDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    aktualizujListeRezerwacjiDlaOddzialu();
                }
            }
            else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }

        private void btnProfil_Click(object sender, RoutedEventArgs e)
        {
            windowSzczegolyPracownika wsp = new windowSzczegolyPracownika();
            wsp.inicjalizujZawartosc(pracownikZalogowany.Id_pracownik, true);
            wsp.Show();
        }



        private void cbNazwaAktualnosci_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbNazwaAktualnosci.SelectedIndex >= 0)
            {
                //btnGaleriaAktualnosci.Visibility = Visibility.Visible;
                btnUsusnAktualnosci.Visibility = Visibility.Visible;
            }
            else
            {
               // btnGaleriaAktualnosci.Visibility = Visibility.Hidden;
                btnUsusnAktualnosci.Visibility = Visibility.Hidden;
            }
        }




        private void btnZmienAktualnosci_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaAktualnosci.SelectedItem != null)
            { 
                if (btnZmienAktualnosci.Content.Equals("Zmień"))
                {
                    tbZmienAktualnosci.Visibility = Visibility.Visible;
                    btnZmienAktualnosci.Content = "Zapisz";
                    tbZmienAktualnosci.Text = ((Aktualnosci)cbNazwaAktualnosci.SelectedItem).Nazwa;
                    tbZmienAktualnosci.Focus();
                }
                else if (btnZmienAktualnosci.Content.Equals("Zapisz"))
                {
                    tbZmienAktualnosci.Visibility = Visibility.Hidden;
                    btnZmienAktualnosci.Content = "Zmień";
                    ((Aktualnosci)cbNazwaAktualnosci.SelectedItem).Nazwa = tbZmienAktualnosci.Text;
                }
            }
        }

        private void btnUsusnAktualnosci_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaAktualnosci.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<Aktualnosci> kraje = cbNazwaAktualnosci.ItemsSource as ObservableCollection<Aktualnosci>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if (((Aktualnosci)cbNazwaAktualnosci.SelectedItem).Id_aktualnosci != 0)
                    aktualnosciDoUsuniecia.Add((Aktualnosci)cbNazwaAktualnosci.SelectedItem);
                kraje.Remove((Aktualnosci)cbNazwaAktualnosci.SelectedItem);

            }
        }


        private void btnOdswiezAktualnosci_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeAktualnosciPromocje();
        }

        private void aktualizujListeAktualnosciPromocje()
        {
            // Aktualnosci
            AktualnosciBL aktuBL = new AktualnosciBL();
            cbNazwaAktualnosci.ItemsSource = aktuBL.pobierzListe();

            // Promocja
            PromocjaBL promocjaBL = new PromocjaBL();
            cbNazwaPromocja.ItemsSource = promocjaBL.pobierzListe();
        }


        private void btnZapiszAktualnosci_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridAktualnosci))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    AktualnosciBL aktualnosciBL = new AktualnosciBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Aktualnosci> tmp = (ObservableCollection<Aktualnosci>)cbNazwaAktualnosci.ItemsSource;

                    if (aktualnosciBL.aktualizujListe(tmp) == true && aktualnosciBL.usun(aktualnosciDoUsuniecia) == true)
                    {
                        aktualizujListeAktualnosciPromocje();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + aktualnosciDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    // aktualizujListeAktualnosciMiejscowosci();
                }
            }
            else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }

        private void cbNazwaPromocja_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (cbNazwaPromocja.SelectedIndex >= 0)
            {
               // btnGaleriaPromocja.Visibility = Visibility.Visible;
                btnUsusnPromocja.Visibility = Visibility.Visible;
            }
            else
            {
                //btnGaleriaPromocja.Visibility = Visibility.Hidden;
                btnUsusnPromocja.Visibility = Visibility.Hidden;
            }
        }




        private void btnZmienPromocja_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaPromocja.SelectedItem != null)
            {
                if (btnZmienPromocja.Content.Equals("Zmień"))
                {
                    tbZmienPromocja.Visibility = Visibility.Visible;
                    btnZmienPromocja.Content = "Zapisz";
                    tbZmienPromocja.Text = ((Promocja)cbNazwaPromocja.SelectedItem).Nazwa;
                    tbZmienPromocja.Focus();
                }
                else if (btnZmienPromocja.Content.Equals("Zapisz"))
                {
                    tbZmienPromocja.Visibility = Visibility.Hidden;
                    btnZmienPromocja.Content = "Zmień";
                    ((Promocja)cbNazwaPromocja.SelectedItem).Nazwa = tbZmienPromocja.Text;
                }
            }
        }

        private void btnUsusnPromocja_Click(object sender, RoutedEventArgs e)
        {
            if (cbNazwaPromocja.SelectedItem != null)
            {
                // Usuwanie zaznaczonej pozcyji z listy
                ObservableCollection<Promocja> kraje = cbNazwaPromocja.ItemsSource as ObservableCollection<Promocja>;
                // Dodanie do listy do usuniecia następuje tylko wtedy gdy Id jest różne od zera, co oznacza ze jest w bazie
                if (((Promocja)cbNazwaPromocja.SelectedItem).Id_promocja != 0)
                    promocjaDoUsuniecia.Add((Promocja)cbNazwaPromocja.SelectedItem);
                kraje.Remove((Promocja)cbNazwaPromocja.SelectedItem);

            }
        }


        private void btnOdswiezPromocja_Click(object sender, RoutedEventArgs e)
        {
            aktualizujListeAktualnosciPromocje();
        }


        private void btnZapiszPromocja_Click(object sender, RoutedEventArgs e)
        {
            if (Validacja.IsValid(gridPromocja))
            {
                MessageBoxResult result = MessageBox.Show("Czy na pewno chcesz zapisać zmiany?", "Uwaga", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (result == MessageBoxResult.Yes)
                {

                    PromocjaBL promocjaBL = new PromocjaBL();
                    //pobieranie aktualnych pozycji do aktualizacji
                    ObservableCollection<Promocja> tmp = (ObservableCollection<Promocja>)cbNazwaPromocja.ItemsSource;

                    if (promocjaBL.aktualizujListe(tmp) == true && promocjaBL.usun(promocjaDoUsuniecia) == true)
                    {
                        aktualizujListeAktualnosciPromocje();
                        string komunikat = "Operacja zakończona sukcesem.\n" + "Usunięto " + promocjaDoUsuniecia.Count + " pozycji.";
                        MessageBox.Show(komunikat, "Sukces", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        MessageBox.Show("Operacja zakończona błędem", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);

                    }
                }
                else if (result == MessageBoxResult.No)
                {
                    // aktualizujListePromocjaMiejscowosci();
                }
            }
            else
                MessageBox.Show("Wprowadzone zostały niepoprawne dane.", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
        }



        private void rtbOpisSkrotPromocja_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextRange tr = new TextRange(rtbOpisSkrotPromocja.Document.ContentStart, rtbOpisSkrotPromocja.Document.ContentEnd);
            lblIloscZnakowOpisSkrotPromocja.Content = string.Format("Pozostało znaków: {0}", 300 - tr.Text.Length);
            if (tr.Text.Length > 300)
            {
                MessageBox.Show("Wprowadzony opis skrócony jest zadługi", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);
                string tmp = tr.Text.Remove(298);
                new TextRange(rtbOpisSkrotPromocja.Document.ContentStart, rtbOpisSkrotPromocja.Document.ContentEnd).Text = tmp;
            }
        }

        private void btnDodajPromocja_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                Promocja promocja = new Promocja();
                // Tworzenie obiektu Promocja
                promocja.Nazwa = windows.Nazwa;
                // Dodanie go do listy Promocji do dodania

                ObservableCollection<Promocja> promocje = (ObservableCollection<Promocja>)cbNazwaPromocja.ItemsSource;
                if (promocje == null)
                {
                    promocje = new ObservableCollection<Promocja>();
                }
                promocje.Add(promocja);
                cbNazwaPromocja.ItemsSource = promocje;
                cbNazwaPromocja.SelectedItem = promocja;
            }
        }


        private void rtbOpisSkrotAktualnosci_TextChanged(object sender, TextChangedEventArgs e)
        {
            TextRange tr = new TextRange(rtbOpisSkrotAktualnosci.Document.ContentStart, rtbOpisSkrotAktualnosci.Document.ContentEnd);
            lblIloscZnakowOpisSkrotAktualnosci.Content = string.Format("Pozostało znaków: {0}", 300 - tr.Text.Length);
            if (tr.Text.Length > 300)
            {
                MessageBox.Show("Wprowadzony opis skrócony jest zadługi", "Uwaga", MessageBoxButton.OK, MessageBoxImage.Warning);
                string tmp = tr.Text.Remove(298);
                new TextRange(rtbOpisSkrotAktualnosci.Document.ContentStart, rtbOpisSkrotAktualnosci.Document.ContentEnd).Text = tmp;
            }
        }

        private void btnDodajAktualnosci_Click(object sender, RoutedEventArgs e)
        {
            windowDodaj windows = new windowDodaj();
            windows.ShowDialog();

            if (windows.DialogResult.Value == true)
            {
                Aktualnosci aktualnosci = new Aktualnosci();
                // Tworzenie obiektu Aktualnosci
                aktualnosci.Nazwa = windows.Nazwa;
                // Dodanie go do listy Aktualnosci do dodania

                ObservableCollection<Aktualnosci> aktualnoscie = (ObservableCollection<Aktualnosci>)cbNazwaAktualnosci.ItemsSource;

                if (aktualnoscie == null)
                {
                    aktualnoscie = new ObservableCollection<Aktualnosci>();
                }
                aktualnoscie.Add(aktualnosci);
                cbNazwaAktualnosci.ItemsSource = aktualnoscie;
                cbNazwaAktualnosci.SelectedItem = aktualnosci;
            }
        }

        private void dataGridListaRezerwacjiDlaOddzialu_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            btnPokazSzczegolyRezerwacjaDlaOddzialu.Visibility = Visibility.Visible;
        }
             

               
    }
}
